//#include <fuse.h>
#include <stdio.h>
#include <stdint.h>//uintN_t N bits, http://linux.die.net/man/3/uint32_t
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>//manejar errores
#include <unistd.h>
#include <fcntl.h>//posix manejar archivos
#include <dirent.h>//posix manejar directorios
#include <sys/stat.h>
#include "operacionesSectores.h"
#include "estructuras.h"
//#include "operacionesFUSE.h"
#include "imprimir.h"
#include "funcionesBasicas.h"
#include "utils.h"
#include "entriesLFN.h"
#include <malloc.h>

//****************************************************************************************************
static const char *FAT_PATH = "/home/utn_so/fat32.disk";


void capaDeDireccionamientoAsectoresLectura(uint32_t nroBloque){

		uint32_t nroSector;
		uint32_t sectorN;
        char contenedor[SIZE_SECTOR];
        char *buffer;

        int32_t descriptor = abrirArchivo(FAT_PATH);
		nroSector = calcularSector(nroBloque);

		for (sectorN = 0; sectorN < SIZE_BLOCK; sectorN++){

			if (capaDir.sectores[sectorN].sectorReal != nroSector){
				capaDir.sectores[sectorN].sectorReal = nroSector;
				buffer = leerSector(nroSector,contenedor,descriptor);
				rellenarSector(buffer,&capaDir.sectores[sectorN]);
			}
			nroSector++;
		}
		close(descriptor);
}

void capaDeDireccionamientoAsectoresEscritura(){

	int32_t descriptor = abrirArchivo(FAT_PATH);
	for(uint32_t nroSector = 0; nroSector < SIZE_BLOCK; nroSector++){
		escribirSector(capaDir.sectores[nroSector].sectorReal,capaDir.sectores[nroSector].bytes,descriptor);
	}
	close(descriptor);

}
